#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Modulos 
import sys, gtk, pygame, utils, objetos
from pygame.locals import *

# Constantes

# Clases
# ---------------------------------------------------------------------

class ObjetoGraficoTexto(pygame.sprite.Sprite):
	def __init__(self, texto, posInicialx, posInicialy, posCorrectax, posCorrectay ):
		self.fuente = pygame.font.Font("fonts/justadream_solid.ttf", int(23*utils.RES))
		self.image = pygame.font.Font.render(self.fuente, texto, 1, (50,50,255))
		self.rect = self.image.get_rect()

		self.rect.centerx = posInicialx
		self.rect.centery = posInicialy

		self.valor = texto
		try:
		    self.valorNumerico = float(texto)
		except:
		    self.valorNumerico = 0

		self.posInicialx = posInicialx
		self.posInicialy = posInicialy

		self.posCorrectax = posCorrectax
		self.posCorrectay = posCorrectay

		self.drag = False
		self.correcta = False
		self.sonido_correcto = pygame.mixer.Sound("sounds/click.wav")
		self.sonido_fallo = pygame.mixer.Sound("sounds/fallo.wav")

	def sumar(self):
		self.valorNumerico = self.valorNumerico + 0.25
		self.valor = str( self.valorNumerico )
		self.image = pygame.font.Font.render(self.fuente, self.valor, 1, (50,50,255))
		#self.rect = self.image.get_rect()

	def restar(self):
		self.valorNumerico = self.valorNumerico - 0.25
		if self.valorNumerico <= 0 :
			self.valorNumerico = 0

		self.valor = str( self.valorNumerico )
		self.image = pygame.font.Font.render(self.fuente, self.valor, 1, (50,50,255))
		#self.rect = self.image.get_rect()

	def colocarPosicionInicial(self):
		self.rect.centerx = self.posInicialx
		self.rect.centery = self.posInicialy
		self.correcta = False			

	def verificarPosCorrecta(self):
		if abs(self.rect.centerx - self.posCorrectax) < 15 and abs(self.rect.centery - self.posCorrectay) < 15 :
			self.rect.centerx = self.posCorrectax
			self.rect.centery = self.posCorrectay
			self.correcta = True
			print("Esta en pos correcta  "+self.valor )
			self.sonido_correcto.play()
			return True
		else:
			print "No esta en la pos correcta " + str(self.rect.centerx) + ";" + str(self.rect.centery)
			return False



# ---------------------------------------------------------------------
# Numero de litros
# Operacion Suma = 1 ; Resta = 3
def detectar_operacion(objectosGraficos, operacion ):
	x,y = pygame.mouse.get_pos()
	for item in objectosGraficos:
		if(item.rect.collidepoint(pygame.mouse.get_pos())):
			if (operacion == 1):
				item.sumar()
			elif(operacion == 3):
				item.restar()


			
def dibujar(screen,cursor_picture, clock):
    salir = 0
    background_image = utils.load_image('images/fondo2.png')

    #boton de la flecha para continuar
    btn_adelante = objetos.BotonAdelante()
    btn_atras = objetos.BotonAtras()

    #texto superior derecho que indica el numero de clase
    clase2, clase2_rect = utils.texto_clase("Clase 2", 750*utils.RES, 15*utils.RES)

    titulo1, titulo1_rect = utils.texto_subtitulo_azul("EL USO DEL AGUA", 650*utils.RES, 65*utils.RES)
    titulo2, titulo2_rect = utils.texto_subtitulo_azul(".....................", 650*utils.RES, 70*utils.RES)
    x1 = 655
    y1 = 75
    linea1,linea1_rect = utils.texto_normal('El agua se usa para tantas cosas,', 	x1*utils.RES,(y1+(1*30))*utils.RES, (0, 0, 0), 18 )
    linea2,linea2_rect = utils.texto_normal('que casi ni nos damos cuenta. ', 	        x1*utils.RES,(y1+(2*30))*utils.RES, (0, 0, 0), 18 )
    linea3,linea3_rect = utils.texto_normal('Escribí dentro de los ', 	                x1*utils.RES,(y1+(3*30))*utils.RES, (0, 0, 0), 18 )
    linea4,linea4_rect = utils.texto_normal('recuadros cuánta agua pensás ', 	                        x1*utils.RES,(y1+(4*30))*utils.RES, (0, 0, 0), 18 )
    linea5,linea5_rect = utils.texto_normal('que se necesita para realizar ', 	        x1*utils.RES,(y1+(5*30))*utils.RES, (0, 0, 0), 18 )
    linea6,linea6_rect = utils.texto_normal('cada acción.', 	                                x1*utils.RES,(y1+(6*30))*utils.RES, (0, 0, 0), 18 )

    agenda = utils.load_image('images/clase2_agenda.png', True)
    agenda_rect = (70*utils.RES,-25*utils.RES)

    completoTexto = ObjetoGraficoTexto('CORRECTO!!!', 400*utils.RES,  480*utils.RES,  (0)*utils.RES,  (0)*utils.RES )

    objetosGraficos = list()
    objetosGraficos.append( ObjetoGraficoTexto("0", (460)*utils.RES,  32*utils.RES,   (0)*utils.RES,  (0)*utils.RES ) ) 
    objetosGraficos.append( ObjetoGraficoTexto("0", (462)*utils.RES,  58*utils.RES,  (0)*utils.RES,  (0)*utils.RES ) )
    objetosGraficos.append( ObjetoGraficoTexto("0", (464)*utils.RES,  80*utils.RES,  (0)*utils.RES,  (0)*utils.RES ) )
    objetosGraficos.append( ObjetoGraficoTexto("0", (466)*utils.RES,  105*utils.RES,  (0)*utils.RES,  (0)*utils.RES ) )
    objetosGraficos.append( ObjetoGraficoTexto("0", (468)*utils.RES,  127*utils.RES,  (0)*utils.RES,  (0)*utils.RES ) )
    objetosGraficos.append( ObjetoGraficoTexto("0", (468)*utils.RES,  147*utils.RES,  (0)*utils.RES,  (0)*utils.RES ) )
    objetosGraficos.append( ObjetoGraficoTexto("0", (468)*utils.RES,  172*utils.RES,  (0)*utils.RES,  (0)*utils.RES ) )

    objetosGraficos.append( ObjetoGraficoTexto("0", (474)*utils.RES,  217*utils.RES,  (0)*utils.RES,  (0)*utils.RES ) )
    objetosGraficos.append( ObjetoGraficoTexto("0", (475)*utils.RES,  237*utils.RES,  (0)*utils.RES,  (0)*utils.RES ) )
    objetosGraficos.append( ObjetoGraficoTexto("0", (477)*utils.RES,  255*utils.RES,  (0)*utils.RES,  (0)*utils.RES ) )
    objetosGraficos.append( ObjetoGraficoTexto("0", (478)*utils.RES,  278*utils.RES,  (0)*utils.RES,  (0)*utils.RES ) )
    objetosGraficos.append( ObjetoGraficoTexto("0", (482)*utils.RES,  300*utils.RES,  (0)*utils.RES,  (0)*utils.RES ) )
    objetosGraficos.append( ObjetoGraficoTexto("0", (485)*utils.RES,  325*utils.RES,  (0)*utils.RES,  (0)*utils.RES ) )

    objetosGraficos.append( ObjetoGraficoTexto("0", (487)*utils.RES,  348*utils.RES,  (0)*utils.RES,  (0)*utils.RES ) )
    objetosGraficos.append( ObjetoGraficoTexto("0", (488)*utils.RES,  373*utils.RES,  (0)*utils.RES,  (0)*utils.RES ) )
    objetosGraficos.append( ObjetoGraficoTexto("0", (488)*utils.RES,  397*utils.RES,  (0)*utils.RES,  (0)*utils.RES ) )
    objetosGraficos.append( ObjetoGraficoTexto("0", (492)*utils.RES,  422*utils.RES,  (0)*utils.RES,  (0)*utils.RES ) )
    objetosGraficos.append( ObjetoGraficoTexto("0", (497)*utils.RES,  467*utils.RES,  (0)*utils.RES,  (0)*utils.RES ) )


    while salir == 0:
    
    	# Pump GTK messages.
		while gtk.events_pending():
			gtk.main_iteration()
			
		for eventos in pygame.event.get():
			if eventos.type == QUIT:
				sys.exit(0)
			elif eventos.type == pygame.VIDEORESIZE:
			   pygame.display.set_mode(eventos.size, pygame.RESIZABLE)	
			elif eventos.type == MOUSEBUTTONDOWN:
				if btn_adelante.rect.collidepoint(pygame.mouse.get_pos()):
					salir = 4
					btn_adelante.sonido.play()	
				elif btn_atras.rect.collidepoint(pygame.mouse.get_pos()):
					salir = 2
					btn_atras.sonido.play()	

				# Clik izquierdo, eventos.button == 1 
				# Clik derecho, eventos.button == 3
				detectar_operacion(objetosGraficos, eventos.button )


		# Realiza la animacion del texto	
		screen.blit(background_image, (0, 0))
		screen.blit(clase2, clase2_rect)

		screen.blit(titulo1, titulo1_rect)
		screen.blit(titulo2, titulo2_rect)
		screen.blit(linea1,linea1_rect)
		screen.blit(linea2,linea2_rect)
		screen.blit(linea3,linea3_rect)
		screen.blit(linea4,linea4_rect)
		screen.blit(linea5,linea5_rect)
		screen.blit(linea6,linea6_rect)

		screen.blit(agenda, agenda_rect)
		total = 0
		for og in objetosGraficos:
			total = total + og.valorNumerico 
			screen.blit(og.image,og.rect)

		m = 'El total de litros'
		l, lrec =  utils.texto_normal(m , 650*utils.RES, 370*utils.RES, (255, 0, 0), 24 )
		screen.blit(l, lrec)

		m = 'es ' + str(total)
		l, lrec =  utils.texto_normal(m , 650*utils.RES, 390*utils.RES, (255, 0, 0), 24 )
		screen.blit(l, lrec)

		screen.blit(btn_adelante.image, btn_adelante.rect)
		screen.blit(btn_atras.image, btn_atras.rect)
		screen.blit(cursor_picture, pygame.mouse.get_pos())
		pygame.display.flip()

		# Try to stay at 30 FPS
		clock.tick(30)
                	 
    return salir


# This function is called when the game is run directly from the command line:
# ./TestGame.py 
def main():
	
	pygame.init()
	screen = pygame.display.set_mode((int(800*utils.RES), int(520*utils.RES)), pygame.RESIZABLE) #pygame.display.get_surface() #

	# Fake a Sugar cursor for the pyGame canvas area
	pygame.mouse.set_cursor((8,8),(0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0))
	cursor_picture = pygame.image.load('images/standardcursor.png')
	cursor_picture.convert_alpha() 
	clock = pygame.time.Clock()
	dibujar(screen,cursor_picture,clock)
 
if __name__ == '__main__':
   main()
